刚到新公司,公司拥有自己的gitlab服务器,在配置完公司发的gitlab账号后,发现原本电脑上关联的github被新生成key覆盖而不能提交代码,也就是push冲突了。于是花了点时间研究了下在同一电脑上同时配置自己的git账号和公司的gitlab账号。

我们知道git关联远程库是根据电脑上生成的key即./ssh文件下的id_rsa_pub和git bush配置的email。

1.配置邮箱和用户名

# 全局配置,Github仓库中默认使用此配置
git config --global user.name 'echoLC' && git config --global user.email 'echoLC@gmail.com' 

# 公司的gilab配置,每次有新的gitlab需要添加,执行下如下命令
git config --local user.name 'lc' && git config --local user.email 'lc@xx.gitlab.com'

2. 生成 ssh key 上传到 Github/Gitlab

# 生成公钥、密钥的同时指定文件名,Gitlab使用
ssh-keygen -t rsa -f ~/.ssh/id_rsa.xx.gitlab -C 
"lc@corp.gitlab.com"

# 生成默认,Github使用
ssh-keygen -t rsa -C "echoLC@gmail.com"

执行完命令后.ssh目录下会除了生成id_rsa和id_rsa.pub,还会多出 id_rsa.xx.gitlab和id_rsa.xx.gitlab.pub,这是放到gitlab上的key。

3.配置 config 文件

在 ~/.ssh目录下,如果不存在,则新建 touch ~/.ssh/config文件 ,文件内容添加如下:

Host *.gitlab.com
     IdentityFile ~/.ssh/id_rsa.xx.gitlab.pub
     User echoLC

配置完成后把key分别上传到github和gitlab上就ok了。

验证是否配置成功

由于每个托管商的仓库都有唯一的后缀,比如 Github的是 git@github.com:*,所以可以这样测试:

ssh -T git@github.com
Hi echoLC! You've successfully authenticated, but GitHub does not provide shell access.

ssh -T git@gitlab.dev
Welcome to GitLab, lc!

看到上面的Welcome信息说明配置是Ok的。


echoLC
111 声望9 粉丝

喜欢前端,喜欢新技术。